package com.xm;

/**
 * @Author：xm
 * @Project：runoob
 * @Date：2024/7/15 15:46
 */

public class Generic06 {
    public static void main(String[] args) {
        // 创建不同类型数组
        Integer[] intArray = {1, 2, 3, 4, 5};
        Double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5};
        Character[] charArray = {'h', 'e', 'l', 'l', 'o'};

        System.out.println("整型数组元素：");
        printArray(intArray);

        System.out.println("双精度型数组元素：");
        printArray(doubleArray);

        System.out.println("字符型数组元素：");
        printArray(charArray);

        System.out.println("---华丽的分割线---");
        System.out.printf("%d, %d 和 %d 中最大的数为 %d\n",3,4,5,maximum(3,4,5));

        System.out.printf("%.1f, %.1f 和 %.1f 中最大的数为 %.1f\n",6.6,8.8,7.7,maximum(6.6,8.8,7.7));

        System.out.printf("%s, %s 和 %s 中最大的数为 %s\n","pear","apple","orange",maximum("pear","apple","orange"));
    }

    // 泛型方法 printArray
    public static <E> void printArray(E[] inputArray) {
        for (E element : inputArray) {
            System.out.printf("%s ",element);
        }
        System.out.println();
    }

    // 比较三个值并返回最大值
    public static <T extends Comparable<T>> T maximum(T x,T y,T z) {
        T max = x; // 假设x是初始最大值
        if (y.compareTo(max) > 0) {
            max = y;
        }
        if (z.compareTo(max) > 0) {
            max = z;
        }
        return max;
    }
}
